import { ChatPromptTemplate } from '@langchain/core/prompts';
import { ChatOpenAI } from '@langchain/openai';
import { McpServer } from './McpServer';
import { createReactAgent } from '@langchain/langgraph/prebuilt';

const model = new ChatOpenAI({
  // verbose: true,
  temperature: 0.7,
  // maxTokens: 8000,
  model: 'Qwen/Qwen2.5-7B-Instruct',
  configuration: {
    apiKey: 'sk-sssdueysiwnoinzwqvtwhbwzdniszusgvprzrcaavppoocnb',
    baseURL: 'https://api.siliconflow.cn/v1/',
  },
});
// const prompt = ChatPromptTemplate.fromMessages([
//   ['system', '使用中文回答问题'],
//   ['system', '你是一个gis开发专家,精通各种gis开发技术'],
//   ['system', '请简洁和专业的回答用户的问题'],
//   { role: 'user', content: '{message}' },
// ]);

const prompt = ChatPromptTemplate.fromTemplate(`
      回答用户的问题,
      1. 你是一个gis开发专家,精通各种gis开发技术
      2. 请简洁和专业的回答用户的问题,并给出每个字段的解释
      3. 如果你不知道答案,请说你不知道,不要编造答案,使用json格式回答
      4. 请用中文回答
      context: {context}
      input: {input}`);
const chain = prompt.pipe(model);

const getAgent = async () => {
  const tools = await McpServer.getTools();
  const agent = createReactAgent({ llm: model, tools });
  return agent;
};

export { model, chain, getAgent };
